package com.jeomo.sys.starter.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.jeomo.base.starter.entity.BaseCodeEntity;
import com.jeomo.common.core.annocation.DictLabel;
import com.jeomo.sys.api.enums.OrgStatusEnum;
import com.jeomo.sys.api.enums.OrgTypeEnum;

/**
 * 权限隔离的最高粒度，不同组织的之间的数据是绝对透明的
 *
 * @Author: qbt
 * @Date: 2020/7/7 23:00
 * @Version 1.0
 */
@TableName("sys_org")
public class Org extends BaseCodeEntity {

    private static final long serialVersionUID = -8526596737014652742L;

    /**
     * 组织名称
     */
    @DictLabel
    private String name;

    /**
     * 组织全称
     */
    private String fullName;

    /**
     * 顶级组织号
     * 类似于各个集团，比如王府井，万达，等等
     * 顶级组织可能是一个主门店或者一个分组，不允许是一个门店
     * 各个顶级组织之间的数据必须强制隔离
     */
    private String topOrgCode;

    /**
     * 类型： 1门店  2分组
     */
    private OrgTypeEnum type;

    /**
     * 组织状态
     */
    private OrgStatusEnum status;

    /**
     * 父节点
     */
    private String parentCode;

    public String getParentCode() {
        return parentCode;
    }

    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public OrgTypeEnum getType() {
        return type;
    }

    public void setType(OrgTypeEnum type) {
        this.type = type;
    }

    public String getTopOrgCode() {
        return topOrgCode;
    }

    public void setTopOrgCode(String topOrgCode) {
        this.topOrgCode = topOrgCode;
    }

    public OrgStatusEnum getStatus() {
        return status;
    }

    public void setStatus(OrgStatusEnum status) {
        this.status = status;
    }

    /**
     * 是否是分组
     * @return
     */
    public boolean isGroup() {
        return OrgTypeEnum.MALL_GROUP.equals(getType());
    }

    /**
     * 是否是门店
     * 注意，主门店返回是false
     * @return
     */
    public boolean isMall() {
        return OrgTypeEnum.MALL.equals(getType());
    }

    /**
     * 是否已经被停用
     * @return
     */
    public boolean hasStoped() {
        return OrgStatusEnum.HAS_STOP_ED.equals(this.status);
    }

}
